--------------------------------------
----------- CAPITULO 4 ---------------
--------------------------------------

-- Ejercicio 7
ejercicio7 :: Int -> Int -> Int
ejercicio7 n m
	| m == 0	= 0
	| m == 1	= n
	| otherwise	= n + ejercicio7 n (m-1)
		
-- Ejercicio 8
ejercicio8 :: Int -> Int
ejercicio8 n = ejercicio8_aux n (n `div` 2)

ejercicio8_aux :: Int -> Int -> Int
ejercicio8_aux n m
		| m * m <= n	= m
		| otherwise 	= ejercicio8_aux n (m-1)

-- Ejercicio 10
f :: Int -> Int
f 0 = 0
f 1 = 44
f 2 = 17
f _ = 0
ejercicio10 :: Int -> Bool
ejercicio10 n = ejercicio10_aux [0..n]

ejercicio10_aux :: [Int] -> Bool
ejercicio10_aux (x:xs)
	| f x == 0	= True
	| otherwise	= False || ejercicio10_aux (xs)